package cn.iocoder.yudao.module.crossborder.srm.api.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 采购订单信息 DTO
 *
 * @author LHL
 */
@Schema(description = "RPC 服务 - 采购订单信息 DTO")
@Data
public class PurchaseOrderDTO {

    @Schema(description = "采购订单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
    private Long id;

    @Schema(description = "采购订单号", requiredMode = Schema.RequiredMode.REQUIRED, example = "PO202401010001")
    private String orderNo;

    @Schema(description = "供应商编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "2048")
    private Long supplierId;

    @Schema(description = "供应商名称", example = "优质供应商有限公司")
    private String supplierName;

    @Schema(description = "采购类型", example = "1")
    private Integer purchaseType;

    @Schema(description = "订单状态", example = "1")
    private Integer status;

    @Schema(description = "订单总金额", example = "100000.00")
    private BigDecimal totalAmount;

    @Schema(description = "已付金额", example = "50000.00")
    private BigDecimal paidAmount;

    @Schema(description = "货币代码", example = "CNY")
    private String currency;

    @Schema(description = "付款条件", example = "30天付款")
    private String paymentTerms;

    @Schema(description = "交货条件", example = "FOB上海")
    private String deliveryTerms;

    @Schema(description = "交货地址", example = "上海市浦东新区仓库")
    private String deliveryAddress;

    @Schema(description = "预计交货时间")
    private LocalDateTime expectedDeliveryTime;

    @Schema(description = "实际交货时间")
    private LocalDateTime actualDeliveryTime;

    @Schema(description = "采购员", example = "李四")
    private String purchaser;

    @Schema(description = "采购部门", example = "采购部")
    private String purchaseDepartment;

    @Schema(description = "审批人", example = "王五")
    private String approver;

    @Schema(description = "审批时间")
    private LocalDateTime approvalTime;

    @Schema(description = "合同编号", example = "CONTRACT001")
    private String contractNo;

    @Schema(description = "质检状态", example = "1")
    private Integer qualityStatus;

    @Schema(description = "质检结果", example = "合格")
    private String qualityResult;

    @Schema(description = "备注", example = "紧急采购订单")
    private String remark;

    @Schema(description = "创建时间")
    private LocalDateTime createTime;

    @Schema(description = "更新时间")
    private LocalDateTime updateTime;

}
